#include<iostream>
#include<pthread.h>

namespace bit{
    struct ThreadData{
        void* _args;
        std::string _name;
        ThreadData(std::string& name,void* args)
        :_name(name)
        ,_args(args)
        {}
    };
    typedef void* (*fun_t)(void*);//线程要执行的函数的参数和返回值都为void*
    class Thread{
    private:
        fun_t func;       // 线程要执行的函数
        ThreadData _data; // 线程的名字和线程的数据
        pthread_t tid;    // 线程的tid
    public:
        Thread(std::string& name,fun_t function,void * args)
        :func(function)
        ,_data(name,args)
        {}
        void start(){
            pthread_create(&tid,nullptr,func,_data._args);
        }
        void join(){
            pthread_join(tid,nullptr);
        }
        std::string& name(){
            return _data._name;
        }
        ~Thread(){}
    };
  
}